package ejb.com.bbva.cbm.util.voucher;

import java.util.List;

import cbm.commons.UtilitarioFunciones;
import ejb.cbm.operatoria.bean.ClienteBean;
import ejb.com.bbva.cbm.util.CacheDatos;
import ejb.com.bbva.cbm.util.Constante;

public class DatosVoucherRetiroEfectivo extends DatosVoucher {
	private String numeroCuenta;
	private String nombreTitular;
	private String divisa;
	private String moneda;
	private String importe;
	private String simboloMoneda;
	private List<ClienteBean> clientes;
	private String saldoDisponible;
	private String saldoActual;
	private String observacion;
	private boolean flgSaldoDisponible;
	private boolean flgSaldoActual;
	public DatosVoucherRetiroEfectivo(){
		super(56, 0);
	}
	
	public String getNumeroCuenta() {
		return numeroCuenta;
	}

	public void setNumeroCuenta(String numeroCuenta) {
		this.numeroCuenta = numeroCuenta;
	}

	public String getNombreTitular() {
		return nombreTitular;
	}

	public void setNombreTitular(String nombreTitular) {
		this.nombreTitular = nombreTitular;
	}

	public String getDivisa() {
		return divisa;
	}

	public void setDivisa(String divisa) {
		this.divisa = divisa;
	}

	public String getMoneda() {
		return moneda;
	}

	public void setMoneda(String moneda) {
		this.moneda = moneda;
	}

	public String getImporte() {
		return importe;
	}

	public void setImporte(String importe) {
		this.importe = importe;
	}

	@Override
	public String generarCadenaImpresion() {
		
		StringBuilder impresionTexto = new StringBuilder();
		impresionTexto.append(UtilitarioFunciones.formatStringCENTER("--- RETIRO EN EFECTIVO ---", 45, ' ')).append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.formatStringLEFT("FECHA", 6, ' ')).append(": ").
		append(UtilitarioFunciones.formatearFecha(UtilitarioFunciones.obtenerFechaActual(),"dd-MM-yyyy")).
		append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.formatStringLEFT("CTA..", 6, ' ')).append(": ").
			append(UtilitarioFunciones.formatStringLEFT(this.numeroCuenta,20,' ')).append(" DIV: ").append(this.divisa).
			append(UtilitarioFunciones.SALTO_DE_LINEA);;
		
		impresionTexto.append(UtilitarioFunciones.formatStringLEFT("TIT..", 6, ' ')).append(": ");
		int i = 0;
		for(ClienteBean cliente: this.clientes){
			if(cliente.getEsTitular()){
				if(i==0){
					impresionTexto.append(UtilitarioFunciones.formatStringLEFT(cliente.getNombreCompleto(), 40, ' ')).
					append(UtilitarioFunciones.SALTO_DE_LINEA);
				}else{
					impresionTexto.append(UtilitarioFunciones.formatStringLEFT("     ", 6, ' ')).append("  ");
					impresionTexto.append(UtilitarioFunciones.formatStringLEFT(cliente.getNombreCompleto(), 40, ' ')).
					append(UtilitarioFunciones.SALTO_DE_LINEA);
				}
				i++;
			}
		}
		
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		if(observacion!=null){
			impresionTexto.append("REF.. "+observacion);
		}else{
			impresionTexto.append("REF.. RETIRO EN EFECTIVO CON DOCUMENTO DE IDENTIDAD Y FIRMA");
		}
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append("IMPORTE............:").append("   "+this.simboloMoneda).append("  "+UtilitarioFunciones.formatearMontoNumerico(this.importe)).append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		if(this.moneda.equals("EUR")){
			this.simboloMoneda = "EUR";
		}
		if(flgSaldoDisponible){
			impresionTexto.append(UtilitarioFunciones.formatStringLEFT("(*)SALDO DISP CLIENTE",21,' ')).append("  "+this.simboloMoneda).append(UtilitarioFunciones.formatStringRIGHT(" "+this.saldoDisponible,14, ' ')).append(UtilitarioFunciones.SALTO_DE_LINEA);
		}
		if(flgSaldoActual){
			impresionTexto.append(UtilitarioFunciones.formatStringLEFT("SALDO ACTUAL",21,' ')).append("  "+this.simboloMoneda).append(UtilitarioFunciones.formatStringRIGHT(" "+this.saldoActual,14, ' ')).append(UtilitarioFunciones.SALTO_DE_LINEA);
		}
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		
		String glosa = generarGlosaOperacion();
		if(glosa != null && !glosa.trim().equals("")) {
			impresionTexto.append("GLOSA: ").append(glosa).append(UtilitarioFunciones.SALTO_DE_LINEA);
		}
		impresionTexto.append("CLAVE: ").append(generarClaveOperacion()).append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append((UtilitarioFunciones.formatStringCENTER(oficinaNombre, 43, ' ')));
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.SALTO_DE_LINEA);
		impresionTexto.append(UtilitarioFunciones.getFinalPagina());
		return impresionTexto.toString();
	}

	public String getSimboloMoneda() {
		return simboloMoneda;
	}

	public void setSimboloMoneda(String simboloMoneda) {
		this.simboloMoneda = simboloMoneda;
	}

	public List<ClienteBean> getClientes() {
		return clientes;
	}

	public void setClientes(List<ClienteBean> clientes) {
		this.clientes = clientes;
	}

	public String getSaldoDisponible() {
		return saldoDisponible;
	}

	public void setSaldoDisponible(String saldoDisponible) {
		this.saldoDisponible = saldoDisponible;
	}

	public String getSaldoActual() {
		return saldoActual;
	}

	public void setSaldoActual(String saldoActual) {
		this.saldoActual = saldoActual;
	}

	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public boolean isFlgSaldoDisponible() {
		return flgSaldoDisponible;
	}

	public void setFlgSaldoDisponible(boolean flgSaldoDisponible) {
		this.flgSaldoDisponible = flgSaldoDisponible;
	}

	public boolean isFlgSaldoActual() {
		return flgSaldoActual;
	}

	public void setFlgSaldoActual(boolean flgSaldoActual) {
		this.flgSaldoActual = flgSaldoActual;
	}
}
